home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / misc / interfaces3_5.lha / Interfaces / BattMem.mod < prev    next >
Text File  |  1994-03-05  |  4KB  |  157 lines

  1. (*
  2. (*
  3. **  Amiga Oberon Interface Module:
  4. **  $VER: BattMem.mod 40.15 (28.12.93) Oberon 3.0
  5. **
  6. **   © 1993 by Fridtjof Siebert
  7. *)
  8. *)
  9.  
  10. MODULE BattMem;
  11.  
  12. IMPORT e * := Exec;
  13.  
  14. CONST
  15.   battMemName * = "battmem.resource";
  16.  
  17.  
  18. (*
  19.  * Amiga specific bits in the battery-backedup ram.
  20.  *
  21.  *      Bits 0 to 31, inclusive
  22.  *)
  23.  
  24. (*
  25.  * AMIGA_AMNESIA
  26.  *
  27.  *              The battery-backedup memory has had a memory loss.
  28.  *              This bit is used as a flag that the user should be
  29.  *              notified that all battery-backed bit have been
  30.  *              reset and that some attention is required. Zero
  31.  *              indicates that a memory loss has occured.
  32.  *)
  33.  
  34.   amigaAmnesiaAddr    * = 0;
  35.   amigaAmnesiaLen     * = 1;
  36.  
  37. (*
  38.  * SCSI_TIMEOUT
  39.  *
  40.  *              adjusts the timeout value for SCSI device selection.  A
  41.  *              value of 0 will produce short timeouts (128 ms) while a
  42.  *              value of 1 produces long timeouts (2 sec).  This is used
  43.  *              for SeaCrate drives (and some Maxtors apparently) that
  44.  *              don`t respond to selection until they are fully spun up
  45.  *              and intialised.
  46.  *)
  47.  
  48.   scsiTimeoutAddr     * = 1;
  49.   scsiTimeoutLen      * = 1;
  50.  
  51. (*
  52.  * SCSI_LUNS
  53.  *
  54.  *              Determines if the controller attempts to access logical
  55.  *              units above 0 at any given SCSI address.  This prevents
  56.  *              problems with drives that respond to ALL LUN addresses
  57.  *              (instead of only 0 like they should).  Default value is
  58.  *              0 meaning don't support LUNs.
  59.  *)
  60.  
  61.   scsiLunsAddr        * = 2;
  62.   scsiLunsLen         * = 1;
  63.  
  64. (*
  65.  * Shared bits in the battery-backedup ram.
  66.  *
  67.  *      Bits 64 and above
  68.  *)
  69.  
  70. (*
  71.  * SHARED_AMNESIA
  72.  *
  73.  *              The battery-backedup memory has had a memory loss.
  74.  *              This bit is used as a flag that the user should be
  75.  *              notified that all battery-backed bit have been
  76.  *              reset and that some attention is required. Zero
  77.  *              indicates that a memory loss has occured.
  78.  *)
  79.  
  80.   sharedAmnesiaAddr   * = 64;
  81.   sharedAmnesiaLen    * = 1;
  82.  
  83. (*
  84.  * SCSI_HOST_ID
  85.  *
  86.  *              a 3 bit field (0-7) that is stored in complemented form
  87.  *              (this is so that default value of 0 really means 7)
  88.  *              It's used to set the A3000 controllers SCSI ID (on reset)
  89.  *)
  90.  
  91.   scsiHostIdAddr      * = 65;
  92.   scsiHostIdLen       * = 3;
  93.  
  94. (*
  95.  * SCSI_SYNC_XFER
  96.  *
  97.  *              determines if the driver should initiate synchronous
  98.  *              transfer requests or leave it to the drive to send the
  99.  *              first request.  This supports drives that crash or
  100.  *              otherwise get confused when presented with a sync xfer
  101.  *              message.  Default=0=sync xfer not initiated.
  102.  *)
  103.  
  104.   scsiSyncXferAddr    * = 68;
  105.   scsiSyncXferLen     * = 1;
  106.  
  107. (*
  108.  *      See Amix documentation for these bit definitions
  109.  *
  110.  *      Bits 32 to 63, inclusive
  111.  *)
  112.  
  113. (*
  114.  * SCSI_FAST_SYNC
  115.  *
  116.  *              determines if the driver should initiate fast synchronous
  117.  *              transfer requests (>5MB/s) instead of older <=5MB/s requests.
  118.  *              Note that this has no effect if synchronous transfers are not
  119.  *              negotiated by either side.
  120.  *              Default=0=fast sync xfer used.
  121.  *)
  122.  
  123.   scsiFastSyncAddr * = 69;
  124.   scsiFastSyncLen  * = 1;
  125.  
  126. (*
  127.  * SCSI_TAG_QUEUES
  128.  *
  129.  *              determines if the driver should use SCSI-2 tagged queuing
  130.  *              which allows the drive to accept and reorder multiple read
  131.  *              and write requests.
  132.  *              Default=0=tagged queuing NOT enabled
  133.  *)
  134.  
  135.   scsiTagQueuesAddr * = 70;
  136.   scsiTagQueuesLen * = 1;
  137.  
  138. VAR
  139. (*
  140.  *  You have to put a pointer to the battmem.resource here to use the battmem
  141.  *  procedures:
  142.  *)
  143.  
  144.   base * : e.APTR;
  145.  
  146. PROCEDURE ObtainBattSemaphore *{base,-  6}();
  147. PROCEDURE ReleaseBattSemaphore*{base,- 12}();
  148. PROCEDURE ReadBattMem         *{base,- 18}(VAR buffer{8} : ARRAY OF e.BYTE;
  149.                                            offset{0}     : LONGINT;
  150.                                            length{1}     : LONGINT): LONGINT;
  151. PROCEDURE WriteBattMem        *{base,- 24}(buffer{8}     : ARRAY OF e.BYTE;
  152.                                            offset{0}     : LONGINT;
  153.                                            length{1}     : LONGINT): LONGINT;
  154.  
  155. END BattMem.
  156.  
  157.